1. Field of the Invention
The present invention relates generally to the field of data distribution and storage, and more particularly to a method for allowing more efficient navigation between objects stored on a mobile device.
2. Description of the Prior Art
In networked computer systems data is commonly stored in a central location such as a collection of disk drives. In networked computer systems such as those commonly found in business offices, a network server includes a primary data storage system for the network, and the networked computers access files and other data from the network server to cache locally. Increasingly, mobile devices such as laptop computers, handheld computers, and Personal Digital Assistants (PDAs) are being linked to networked computer systems.
Application software developed to run on network servers typically represent and manipulate data in the form of objects where an object is a collection of data arranged in a particular manner. FIG. 1 represents multiple object types 10, 12, and 14, where each object type 10, 12, and 14 is specific to a particular type of data record. As shown, multiple object instances can exist for each object type. In a business context, for example, object types 10, 12, and 14 can include contact information for individuals, product information for companies, and sales records. Each object type 10, 12, and 14 will include a primary key 16 that is a field or a combination of multiple fields dedicated to a unique identifier. For an object type that represents data about customers, the primary key 16 could be a customer number that is unique to each customer. Each object type 10, 12, and 14 also includes fields for various attributes 22. For an object type that represents data about customers, for example, attributes 22 can include the number of years the customer has been a purchaser, the customer's field of business, and so forth.
Additional fields within an object type 10 and 12 can be used to relate together different object types 10, 12, and 14. In FIG. 1 object type 10 includes a first foreign key 18 that links object type 10 to object type 12, and a second foreign key 20 that links object type 10 to object type 14. Similarly, object type 12 is also linked to object type 14 by its foreign key 20. As can be seen from FIG. 1, an object type can include any number of foreign keys or no foreign keys. As with primary keys 16, a foreign key 18 and 20 is a field or a combination of fields dedicated to a unique identifier in the target object type.
Application software running on network servers typically store object instances of the type described above with reference to FIG. 1 in databases having a relational format. A relational database, being a database having a relational format, is one in which data are organized in tables, typically with each row dedicated to a unique record and each column dedicated to a particular type of attribute that is common to each record. Network servers commonly store numerous records in very large tables. When working with a relational database, a table join must be performed in order to find a foreign key that relates a particular instance of one object type to a particular instance of another object type. As is well known, table joins are computationally intensive, especially as table sizes become large. Network servers are typically optimized for processing speed over ease of mobility and are therefore enabled with sufficient processing power to be capable of rapidly performing such computationally intensive table joins.
Mobile devices, on the other hand, trade off processing power for small size, light weight, and low power consumption. To achieve these goals, mobile devices have very limited processing capabilities and storage capacities compared to network servers. Further, some mobile devices do not store data in a relational database but instead use a data structure that is better suited to a limited storage capacity. Consequently, performing large table joins is impractical on mobile devices.
In order to operate the same software application on a mobile device that is available on a network server therefore requires providing an additional source of computing power to the mobile device. This is commonly done by establishing a real-time communications link between the mobile device and a network server so that necessary table joins are computed by the network server which then communicates the results to the mobile device. The obvious disadvantage of this approach is that it requires a real-time communications link any time a user seeks to run the application.
Accordingly, what is needed is a way to operate an application on a mobile device and to provide the mobile device with necessary data regarding the relationships between stored object instances given the limitations of the mobile device computing power and without having to rely on a real-time connection to a network server.